Reshuffle things a little bit
authorMatthias Clasen <mclasen@redhat.com>
Sat, 30 Sep 2017 15:04:16 +0000 (11:04 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 30 Sep 2017 21:58:23 +0000 (17:58 -0400)
Instead of having a function with lots of arguments in
GskVulkanRender that we call from GskVulkanRenderPass which
then just calls back into GskVulkanRenderPass, just create
the new render pass object locally, and an api to add it
to the list that GskVulkanRender keeps. This makes it
a lot easier to preserve all the relevant parameters from
the parent render pass.

gsk/gskvulkanrender.c
gsk/gskvulkanrenderpass.c
gsk/gskvulkanrenderprivate.h

index d4f4e4ed206a09a307fc1c363de5e87fed55f92f..06914b16795586426263f21b5611fdeb736d459c 100644 (file)
@@ -310,7 +310,7 @@ gsk_vulkan_render_add_cleanup_image (GskVulkanRender *self,
   self->cleanup_images = g_slist_prepend (self->cleanup_images, image);
 }
 
-static void
+void
 gsk_vulkan_render_add_render_pass (GskVulkanRender     *self,
                                    GskVulkanRenderPass *pass)
 {
@@ -343,38 +343,6 @@ gsk_vulkan_render_add_node (GskVulkanRender *self,
   gsk_vulkan_render_pass_add (pass, self, node);
 }
 
-void
-gsk_vulkan_render_add_node_for_texture (GskVulkanRender       *self,
-                                        GskRenderNode         *node,
-                                        const graphene_matrix_t *mv,
-                                        const graphene_rect_t *bounds,
-                                        GskVulkanImage        *target,
-                                        VkSemaphore            semaphore)
-{
-  GskVulkanRenderPass *pass;
-  cairo_region_t *clip;
-
-  clip = cairo_region_create_rectangle (&(cairo_rectangle_int_t) {
-                                         0, 0,
-                                         gsk_vulkan_image_get_width (target),
-                                         gsk_vulkan_image_get_height (target)
-                                     });
-
-  pass = gsk_vulkan_render_pass_new (self->vulkan,
-                                     target,
-                                     1,
-                                     mv,
-                                     bounds,
-                                     clip,
-                                     semaphore);
-
-  cairo_region_destroy (clip);
-
-  gsk_vulkan_render_add_render_pass (self, pass);
-
-  gsk_vulkan_render_pass_add (pass, self, node);
-}
-
 void
 gsk_vulkan_render_upload (GskVulkanRender *self)
 {
index 56fb8b2662a00ce7bde47048b9842ec7a297614c..6b10345f53b9b34214e9d9fb007dbb3392ea9dd7 100644 (file)
@@ -689,6 +689,8 @@ gsk_vulkan_render_pass_get_node_as_texture (GskVulkanRenderPass   *self,
           {
             VkSemaphore semaphore;
             graphene_rect_t view;
+            cairo_region_t *clip;
+            GskVulkanRenderPass *pass;
 
             graphene_matrix_transform_bounds (&self->mv, bounds, &view);
 
@@ -715,7 +717,25 @@ gsk_vulkan_render_pass_get_node_as_texture (GskVulkanRenderPass   *self,
                                &semaphore);
 
             g_array_append_val (self->wait_semaphores, semaphore);
-            gsk_vulkan_render_add_node_for_texture (render, node, &self->mv, &view, result, semaphore);
+
+            clip = cairo_region_create_rectangle (&(cairo_rectangle_int_t) {
+                                                  0, 0,
+                                                  gsk_vulkan_image_get_width (result),
+                                                  gsk_vulkan_image_get_height (result)
+                                                  });
+
+            pass = gsk_vulkan_render_pass_new (self->vulkan,
+                                               result,
+                                               1,
+                                               &self->mv,
+                                               &view,
+                                               clip,
+                                               semaphore);
+
+            cairo_region_destroy (clip);
+
+            gsk_vulkan_render_add_render_pass (render, pass);
+            gsk_vulkan_render_pass_add (pass, render, node);
             gsk_vulkan_render_add_cleanup_image (render, result);
 
             return result;
index 09751cb0642804e52c623f61ade24b534559d3c3..1455bb7238ac643878726cff7cc7c79653e9568c 100644 (file)
@@ -69,13 +69,8 @@ void                    gsk_vulkan_render_add_cleanup_image             (GskVulk
 void                    gsk_vulkan_render_add_node                      (GskVulkanRender        *self,
                                                                          GskRenderNode          *node);
 
-void                    gsk_vulkan_render_add_node_for_texture          (GskVulkanRender        *self,
-                                                                         GskRenderNode          *node,
-                                                                         const graphene_matrix_t *mv,
-                                                                         const graphene_rect_t *bounds,
-                                                                         GskVulkanImage        *target,
-                                                                         VkSemaphore            semaphore);
-
+void                    gsk_vulkan_render_add_render_pass               (GskVulkanRender        *self,
+                                                                         GskVulkanRenderPass    *pass);
 
 void                    gsk_vulkan_render_upload                        (GskVulkanRender        *self);